/*
	Copyright 2012 J. Gohlke
	Licensed under the Apache License, Version 2.0 (the
	"License"); you may not use this file except in
	compliance with the License. You may obtain a copy
	of the License at

	http://www.apache.org/licenses/LICENSE-2.0

	Unless required by applicable law or agreed to in
	writing, software distributed under the License is
	distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
	OR CONDITIONS OF ANY KIND, either express or
	implied. See the License for the specific language
	governing permissions and limitations under the
	License
 */
package com.gohlke.lwo;

import com.gohlke.lwo.params.*;
import com.gohlke.lwo.types.Plugin;

import java.util.ArrayList;

/**
 *
 * @author David Wise
 * 
 * Surface Definition
 * 
 * Describes the shading attributes of a surface.
 * 
 * The name uniquely identifies the surface.
 * This is the string that's stored in TAGS and referenced by tag index in PTAG.
 * If the source name is non-null, then this surface is derived from, 
 * or composed with, the source surface. 
 * 
 * The base attributes of the source surface can be overridden by this surface,
 * and texture blocks can be added to the source surface. 
 * 
 * The material attributes follow as a variable list of 
 * subchunks documented below in the Surface Subchunks section.
 */
public class LightwaveObjectSurface {
    public String name;
    public String source;
    
    public ColorParam color = new ColorParam();
    
    public FloatParam difusse = new FloatParam(1f);
    public FloatParam luminosity = new FloatParam();
    public FloatParam specularity = new FloatParam();
    public FloatParam glossiness = new FloatParam(0.4f);
    public FloatParam eta = new FloatParam(1f);
    public FloatParam translucency = new FloatParam();
    public FloatParam bump = new FloatParam(1f);
    
    public ReflectionMapParam reflection = new ReflectionMapParam();
    public ReflectionMapParam transparency = new ReflectionMapParam();
    
    public float smooth;
    public int sideFlags = 1;
    public float alpha;
    public int alphaMode;
    
    public FloatParam color_hilite = new FloatParam();
    public FloatParam color_filter = new FloatParam();
    public FloatParam add_trans = new FloatParam();
    public FloatParam dif_sharp = new FloatParam();
    public FloatParam glow = new FloatParam();
   
    public LineParam line = new LineParam();
    public ArrayList<Plugin> shaders = new ArrayList<Plugin>();
    
}
